!(function (e, n) {
    'object' == typeof exports && 'undefined' != typeof module
        ? (module.exports = n())
        : 'function' == typeof define && define.amd
        ? define(n)
        : ((e = e || self).uniWebview = n());
})(this, function () {
    'use strict';
    try {
        var e = {};
        Object.defineProperty(e, 'passive', {
            get: function () {
                !0;
            }
        }),
            window.addEventListener('test-passive', null, e);
    } catch (e) {}
    var n = Object.prototype.hasOwnProperty;
    function i(e, i) {
        return n.call(e, i);
    }
    var t = [];
    function o() {
        return window.__dcloud_weex_postMessage || window.__dcloud_weex_;
    }
    function a() {
        return window.__uniapp_x_postMessage || window.__uniapp_x_;
    }
    var r = function (e, n) {
            var i = { options: { timestamp: +new Date() }, name: e, arg: n };
            if (a()) {
                if ('postMessage' === e) {
                    var r = { data: n };
                    return window.__uniapp_x_postMessage
                        ? window.__uniapp_x_postMessage(r)
                        : window.__uniapp_x_.postMessage(JSON.stringify(r));
                }
                var d = { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } };
                window.__uniapp_x_postMessage
                    ? window.__uniapp_x_postMessageToService(d)
                    : window.__uniapp_x_.postMessageToService(JSON.stringify(d));
            } else if (o()) {
                if ('postMessage' === e) {
                    var s = { data: [n] };
                    return window.__dcloud_weex_postMessage
                        ? window.__dcloud_weex_postMessage(s)
                        : window.__dcloud_weex_.postMessage(JSON.stringify(s));
                }
                var w = { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } };
                window.__dcloud_weex_postMessage
                    ? window.__dcloud_weex_postMessageToService(w)
                    : window.__dcloud_weex_.postMessageToService(JSON.stringify(w));
            } else {
                if (!window.plus)
                    return window.parent.postMessage(
                        { type: 'WEB_INVOKE_APPSERVICE', data: i, pageId: '' },
                        '*'
                    );
                if (0 === t.length) {
                    var u = plus.webview.currentWebview();
                    if (!u) throw new Error('plus.webview.currentWebview() is undefined');
                    var g = u.parent(),
                        v = '';
                    (v = g ? g.id : u.id), t.push(v);
                }
                if (plus.webview.getWebviewById('__uniapp__service'))
                    plus.webview.postMessageToUniNView(
                        { type: 'WEB_INVOKE_APPSERVICE', args: { data: i, webviewIds: t } },
                        '__uniapp__service'
                    );
                else {
                    var c = JSON.stringify(i);
                    plus.webview
                        .getLaunchWebview()
                        .evalJS(
                            'UniPlusBridge.subscribeHandler("'
                                .concat('WEB_INVOKE_APPSERVICE', '",')
                                .concat(c, ',')
                                .concat(JSON.stringify(t), ');')
                        );
                }
            }
        },
        d = {
            navigateTo: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url;
                r('navigateTo', { url: encodeURI(n) });
            },
            navigateBack: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.delta;
                r('navigateBack', { delta: parseInt(n) || 1 });
            },
            switchTab: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url;
                r('switchTab', { url: encodeURI(n) });
            },
            reLaunch: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url;
                r('reLaunch', { url: encodeURI(n) });
            },
            redirectTo: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
                    n = e.url;
                r('redirectTo', { url: encodeURI(n) });
            },
            getEnv: function (e) {
                a()
                    ? e({ uvue: !0 })
                    : o()
                    ? e({ nvue: !0 })
                    : window.plus
                    ? e({ plus: !0 })
                    : e({ h5: !0 });
            },
            postMessage: function () {
                var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
                r('postMessage', e.data || {});
            }
        },
        s = /uni-app/i.test(navigator.userAgent),
        w = /Html5Plus/i.test(navigator.userAgent),
        u = /complete|loaded|interactive/;
    var g =
        window.my &&
        navigator.userAgent.indexOf(
            ['t', 'n', 'e', 'i', 'l', 'C', 'y', 'a', 'p', 'i', 'l', 'A'].reverse().join('')
        ) > -1;
    var v = window.swan && window.swan.webView && /swan/i.test(navigator.userAgent);
    var c =
        window.qq &&
        window.qq.miniProgram &&
        /QQ/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent);
    var p = window.tt && window.tt.miniProgram && /toutiaomicroapp/i.test(navigator.userAgent);
    var _ =
        window.wx &&
        window.wx.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent);
    var m = window.qa && /quickapp/i.test(navigator.userAgent);
    var f =
        window.ks &&
        window.ks.miniProgram &&
        /micromessenger/i.test(navigator.userAgent) &&
        /miniProgram/i.test(navigator.userAgent);
    var l = window.tt && window.tt.miniProgram && /Lark|Feishu/i.test(navigator.userAgent);
    var E = window.jd && window.jd.miniProgram && /jdmp/i.test(navigator.userAgent);
    var x = window.xhs && window.xhs.miniProgram && /xhsminiapp/i.test(navigator.userAgent);
    for (
        var S,
            h = function () {
                (window.UniAppJSBridge = !0),
                    document.dispatchEvent(
                        new CustomEvent('UniAppJSBridgeReady', { bubbles: !0, cancelable: !0 })
                    );
            },
            y = [
                function (e) {
                    if (s || w)
                        return (
                            window.__uniapp_x_postMessage ||
                            window.__uniapp_x_ ||
                            window.__dcloud_weex_postMessage ||
                            window.__dcloud_weex_
                                ? document.addEventListener('DOMContentLoaded', e)
                                : window.plus && u.test(document.readyState)
                                ? setTimeout(e, 0)
                                : document.addEventListener('plusready', e),
                            d
                        );
                },
                function (e) {
                    if (_)
                        return (
                            window.WeixinJSBridge && window.WeixinJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener('WeixinJSBridgeReady', e),
                            window.wx.miniProgram
                        );
                },
                function (e) {
                    if (c)
                        return (
                            window.QQJSBridge && window.QQJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener('QQJSBridgeReady', e),
                            window.qq.miniProgram
                        );
                },
                function (e) {
                    if (g) {
                        document.addEventListener('DOMContentLoaded', e);
                        var n = window.my;
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv
                        };
                    }
                },
                function (e) {
                    if (v)
                        return (
                            document.addEventListener('DOMContentLoaded', e), window.swan.webView
                        );
                },
                function (e) {
                    if (p)
                        return (
                            document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
                        );
                },
                function (e) {
                    if (m) {
                        window.QaJSBridge && window.QaJSBridge.invoke
                            ? setTimeout(e, 0)
                            : document.addEventListener('QaJSBridgeReady', e);
                        var n = window.qa;
                        return {
                            navigateTo: n.navigateTo,
                            navigateBack: n.navigateBack,
                            switchTab: n.switchTab,
                            reLaunch: n.reLaunch,
                            redirectTo: n.redirectTo,
                            postMessage: n.postMessage,
                            getEnv: n.getEnv
                        };
                    }
                },
                function (e) {
                    if (f)
                        return (
                            window.WeixinJSBridge && window.WeixinJSBridge.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener('WeixinJSBridgeReady', e),
                            window.ks.miniProgram
                        );
                },
                function (e) {
                    if (l)
                        return (
                            document.addEventListener('DOMContentLoaded', e), window.tt.miniProgram
                        );
                },
                function (e) {
                    if (E)
                        return (
                            window.JDJSBridgeReady && window.JDJSBridgeReady.invoke
                                ? setTimeout(e, 0)
                                : document.addEventListener('JDJSBridgeReady', e),
                            window.jd.miniProgram
                        );
                },
                function (e) {
                    if (x) return window.xhs.miniProgram;
                },
                function (e) {
                    return document.addEventListener('DOMContentLoaded', e), d;
                }
            ],
            M = 0;
        M < y.length && !(S = y[M](h));
        M++
    );
    S || (S = {});
    var P = 'undefined' != typeof uniWebview ? uniWebview : {};
    if (!P.navigateTo) for (var b in S) i(S, b) && (P[b] = S[b]);
    return (P.webView = S), P;
});
